package com.infore.dataAudit.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* @ClassName: PageUtil 
* @Description: 分页工具类
* @author Cold
* @date 2018年7月17日 下午3:57:47
 */

public class PageUtil {
	
	public static <T> Page<T> pageConvert(Page<T> page, org.springframework.data.domain.Page<T> dataPage) {
		page.setPageNo(dataPage.getNumber() + 1);
		page.setPageSize(dataPage.getSize());
		page.setTotalRecords((int)dataPage.getTotalElements());
		page.setList(dataPage.getContent());
		return page;
	}
	
	public static <T> Page<T> pageConvert(org.springframework.data.domain.Page<T> dataPage) {
		Page<T> page = new Page<T>();
		page.setPageNo(dataPage.getNumber() + 1);
		page.setPageSize(dataPage.getSize());
		page.setTotalRecords((int)dataPage.getTotalElements());
		page.setList(dataPage.getContent());
		return page;
	}
	
	public static Page<Map<String, Object>> inventedPage(List<Map<String, Object>> list, PageObject pageObject) {
        Page<Map<String, Object>> page = new Page<>();
        List<Map<String, Object>> listRows = new ArrayList<Map<String, Object>>();
        int pageNumber = pageObject.getPageNumber();
        int pageSize = pageObject.getPageSize();
        int totalRecords = list.size();
        page.setPageNo(pageNumber);
        page.setPageSize(pageSize);
        int start = (int) ((pageNumber - 1) * pageSize);
        int end = (int) (pageNumber * pageSize);
        // 虚拟分页
        for (int i = start; i < end; i++) {
            // 如果i大于listALL的长度，则跳出循环
            if (i > (totalRecords - 1)) {
                break;
            }
            listRows.add(list.get(i));
        }

        // 计算总页数
        int pageCount = (totalRecords / pageSize) + 1;
        if (totalRecords % pageObject.getPageSize() != 0) {
            pageCount++;
        }
        page.setTotalRecords(totalRecords);
        page.setTotalPages(pageCount);
        page.setList(listRows);
        return page;
    }
    
    public static <T> Page<T> inventedObjectPage(List<T> list, PageObject pageObject) {
        Page<T> page = new Page<>();
        List<T> listRows = new ArrayList<T>();
        int pageNumber = pageObject.getPageNumber();
        int pageSize = pageObject.getPageSize();
        int totalRecords = list.size();
        page.setPageNo(pageNumber);
        page.setPageSize(pageSize);
        int start = (int) ((pageNumber - 1) * pageSize);
        int end = (int) (pageNumber * pageSize);
        // 虚拟分页
        for (int i = start; i < end; i++) {
            // 如果i大于listALL的长度，则跳出循环
            if (i > (totalRecords - 1)) {
                break;
            }
            listRows.add(list.get(i));
        }

        // 计算总页数
        int pageCount = (totalRecords / pageSize) + 1;
        if (totalRecords % pageObject.getPageSize() != 0) {
            pageCount++;
        }
        page.setTotalRecords(totalRecords);
        page.setTotalPages(pageCount);
        page.setList(listRows);
        return page;
    }
}
